// 防抖函数   避免高频、耗时的操作、以最后一次调用为主的函数使用，可以减少资源消耗
export function debounce(fn, delay = 1000) {
  let timer = null;
  return function (...args) {
    clearTimeout(timer);
    // 延迟执行
    timer = setTimeout(() => {
      // 传入参数（数组） 直接运行  （可以改变this指向）this指向调用者(debounce的调用者)
      fn.apply(this, args);
    }, delay);
  };
}

// 节流函数 会完成前一次触发的函数，才会执行下一次的函数
export function throttle(fn, delay = 1000) {
  let timer = true;
  return function (...args) {
    if (!timer) {
      timer = setTimeout(() => {
        fn.apply(this, args);
        timer = null;
      }, delay);
    }
  };
}

// 判断文件是否是png(从文件本身判断，不是看后缀)
// export async function isPNG(file: File) {
//   // 提取前8个字节
//   const arraybuffer = await file.slice(0, 8).arrayBuffer();

//   // PNG 的前8字节16进制表示
//   const signature = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];
//   // const signature = [137, 80, 78, 71, 13, 10, 26, 10]

//   // 转为 8位无符号整数数组 方便对比
//   // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array
//   const source = new Uint8Array(arraybuffer);

//   // 逐个字节对比
//   for (let i = 0; i < signature.length; i++) {
//     if (source[i] !== signature[i]) {
//       return false;
//     }
//   }
//   return true;
// }


